﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using DECOR.BL.BE;
using DECOR.BL.BC;
using CM.BL.BE;
namespace DECOR.WebApp
{
    public partial class CambPass : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["UsuarioWeb"] == null || Session["UsuarioSAP"] == null)
            {
                Response.Redirect("Login.aspx");
            }

            if (!Page.IsPostBack)
            {
                lblaviso.Text = Convert.ToString(Session["Contrasenia"]);
                if (Convert.ToBoolean(Session["Bandera"]))
                {
                    changePassword1.CancelDestinationPageUrl = ParametroBC.Instance.getParamValue("PasswdPage");
                }
                else
                {
                    changePassword1.CancelDestinationPageUrl = ParametroBC.Instance.getParamValue("MainPage");
                }
            }
        }

        protected void ChangePassword1_ChangingPassword(object sender, LoginCancelEventArgs e)
        {
            string retVal = "";
            changePassword1.ChangePasswordFailureText = "La contraseña no se ha modificado.";

            string claveNueva = changePassword1.NewPassword.ToUpper().Trim();
            string claveAntigua = changePassword1.CurrentPassword.ToUpper().Trim();
            string claveConfirm = changePassword1.ConfirmNewPassword.ToUpper().Trim();

            RfcConfigParametersBE objUsuarioWeb = (RfcConfigParametersBE)Session["UsuarioWeb"];
            if (claveNueva.Equals(claveAntigua))
            {
                retVal = "La contraseña nueva no puede ser igual a la contraseña actual.";
            }
            else
            {
                //no diferencia mayúsculas de minúsculas...
                //si la contraseña anterior es correcta...
                if (objUsuarioWeb.PasswordWEB.ToUpper().Trim().Equals(claveAntigua))
                {
                    // si las contraseñas nuevas coinciden...
                    if (claveNueva.Equals(claveConfirm))
                    {
                        int min = Convert.ToInt32(ParametroBC.Instance.getParamValue("PswdMinLen"));
                        if (claveNueva.Length >= min)
                        {
                            bool validPasswd = ParametroBC.contraseniaValida(claveNueva);

                            if (validPasswd)
                            {
                                objUsuarioWeb.PasswordWEB = claveNueva;
                                retVal = UsuarioBC.Instance.actualizar(objUsuarioWeb);
                            }
                            else
                            {
                                retVal = "La contraseña nueva debe contener caracteres numéricos y alfanuméricos.";
                            }
                        }
                        else
                        {
                            retVal = "La contraseña nueva debe tener al menos " + min.ToString() + " caracteres.";
                        }
                    }
                    else
                    {
                        retVal = "La contraseña nueva y la confirmación no coinciden.";
                    }
                }
                else
                {
                    retVal = "La contraseña actual es incorrecta.";
                }
            }

            if (retVal.Equals(""))
            {
                retVal = "La contraseña se ha modificado.";
                changePassword1.ChangePasswordFailureText = "";
                Response.Redirect(ParametroBC.Instance.getParamValue("MainPage"));
            }
            e.Cancel = true;
            changePassword1.InstructionText = retVal;
        }
    }
}
